#include "exceptionhanding.h"
#include <iostream>
using namespace std;

struct MyExcetion : public exception{
    const char* what() const throw() {
        return "C++ Excetion";
    }
};

ExceptionHanding::ExceptionHanding()
{

}

void ExceptionHanding::show(){
    cout << endl << endl;
    cout << "异常处理==============================================="<< endl;

    // 异常是程序执行期产生问题，比如尝试除以零的操作。
      // 异常提供了一种转移程序控制权的方式。C++
      // 异常处理涉及到三个关键字：try、catch、throw:

      // throw: 当问题出现，程序通过throw抛出一个异常;
      // catch: 在你想要处理问题的地方，通过异常处理程序捕获异常;
      // try: try 块中的代码标识将被激活的特定异常。它后面允许跟着一个或多个 catch
      // 块; 使用 try/catch 语句的语法：
    //https://blog.csdn.net/YoyoHuzeyou/article/details/131149943

    try {

        throw "异常";

    } catch (char const* msg) {
        cout << msg << endl;
    }

    cout << "异常捕捉,标准异常" << endl;
    try {

        throw bad_alloc();

    } catch (bad_alloc& ex) {
        cout << "bad_alloc: " << ex.what() << endl;
    }

    cout << "自定义异常" << endl;
    try {

        throw  MyExcetion();

    } catch (MyExcetion& ex) {
        cout << "MyException caught: " << ex.what() << endl;
    }
}
